﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace CityGames
{
    public partial class FormDevolverJuego : Form
    {
        private DataSet dsAlquiler = new DataSet();
        private CopiaFisica copia = new CopiaFisica();
        private Socio socio = new Socio();
        public DataRow juego;
        public decimal valorRecargo = 0;
        private string dni = "";
        private string codigo = "";

        public FormDevolverJuego()
        {
            InitializeComponent();
        }

        public void formVacio()
        {
            tbTitulo.Text = "";
            tbPlataforma.Text = "";
            dtpFecha.Value = DateTime.Now;
            tbRecargo.Text = "0";
            tbImporte.Text = "0";
            pbCaratula.ImageLocation = "";
        }

        private void btSiguiente_Click(object sender, EventArgs e)
        {
            DateTime fecha;
            int diasRecargo = 0;
            decimal recargo = 0;
            bool consulta = false;
            dni = "";
            codigo = "";

            try
            {
                valorRecargo = 0;

                dsAlquiler = copia.ObtenerDatosAlquiler(tbCodigo.Text);
                if (dsAlquiler.Tables.Count > 0)
                {
                    foreach (DataRow row in dsAlquiler.Tables["DatosAlquiler"].Rows)
                    {
                        consulta = true;

                        tbTitulo.Text = row["Juego"].ToString();
                        tbPlataforma.Text = row["Plataforma"].ToString();

                        fecha = DateTime.Parse(row["FDevolucion"].ToString());
                        dtpFecha.Value = fecha;

                        diasRecargo = (DateTime.Now - fecha).Days;
                        if (diasRecargo >= 0)
                        {
                            tbRecargo.Text = diasRecargo.ToString();
                            recargo = decimal.Parse(row["Recargo"].ToString());
                            valorRecargo = diasRecargo * recargo;
                            tbImporte.Text = valorRecargo.ToString();
                        }
                        else
                        {
                            tbRecargo.Text = "0";
                            tbImporte.Text = "0";
                        }

                        pbCaratula.ImageLocation = row["Caratula"].ToString();
                        btDevolver.Enabled = true;
                        dni = row["Socio"].ToString();
                        codigo = row["Codigo"].ToString();
                    }
                }

                if(!consulta)
                {
                    formVacio();
                    MessageBox.Show("No existe ningun alquiler activo del juego nº" + tbCodigo.Text, "Se han encontrado errores.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Se han encontrado errores.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            
        }

        private void FormDevolverJuego_Load(object sender, EventArgs e)
        {
            try
            {
                tbTitulo.Enabled = false;
                tbPlataforma.Enabled = false;
                dtpFecha.Enabled = false;
                tbRecargo.Enabled = false;
                tbImporte.Enabled = false;
                btDevolver.Enabled = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Se han encontrado errores.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void gbInformacion_Enter(object sender, EventArgs e)
        {

        }

        private void btDevolver_Click(object sender, EventArgs e)
        {
            try
            {
                if (valorRecargo > 0)
                {
                    if (MessageBox.Show("El alquiler tiene un recargo de " + valorRecargo + "€. \n ¿Cobrar ahora?", "Recargo", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.No)
                    {
                        socio.SumarADeuda(valorRecargo, dni);
                    }
                    
                }
                copia.DevolverJuego(codigo);
                MessageBox.Show("Juego devuelto correctamente.", "Devolución", MessageBoxButtons.OK, MessageBoxIcon.Information);
                tbCodigo.Text = "";
                formVacio();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Se han encontrado errores.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }
    }
}
